//	---------------------------------------------------------------------------
//
//	@file		TwDirect3D11.hlsl
//	@author		Philippe Decaudin
//	@brief		AntTweakBar shaders and techniques for Direct3D11 support
//	@license	This file is part of the AntTweakBar library.
//				For conditions of distribution and use, see License.txt
//
//	---------------------------------------------------------------------------

float4 g_Offset : register(c0) = 0;
float4 g_CstColor : register(c1) = 1;

// Shaders for lines and rectangles

struct LineRectPSInput
{
	float4 Pos : SV_POSITION;
	float4 Color : COLOR0;
};

LineRectPSInput LineRectVS(float4 pos : POSITION, float4 color : COLOR)
{
	LineRectPSInput ps;
	ps.Pos = pos + g_Offset;
	ps.Color = color;
	return ps;
}

LineRectPSInput LineRectCstColorVS(float4 pos : POSITION, float4 color : COLOR)
{
	LineRectPSInput ps;
	ps.Pos = pos + g_Offset;
	ps.Color = g_CstColor;
	return ps;
}

float4 LineRectPS(LineRectPSInput input) : SV_TARGET
{
	return input.Color;
}

// Shaders for text

Texture2D g_Font : register(t0);

SamplerState g_FontSampler : register(s0)
{
	Filter = MIN_MAG_MIP_POINT;
	AddressU = BORDER;
	AddressV = BORDER;
	BorderColor = float4(0, 0, 0, 0);
};

struct TextPSInput
{
	float4 Pos : SV_POSITION;
	float4 Color : COLOR0;
	float2 Tex : TEXCOORD0;
};

TextPSInput TextVS(float4 pos : POSITION, float4 color : COLOR, float2 tex : TEXCOORD0)
{
	TextPSInput ps;
	ps.Pos = pos + g_Offset;
	ps.Color = color;
	ps.Tex = tex;
	return ps;
}

TextPSInput TextCstColorVS(float4 pos : POSITION, float4 color : COLOR, float2 tex : TEXCOORD0)
{
	TextPSInput ps;
	ps.Pos = pos + g_Offset;
	ps.Color = g_CstColor;
	ps.Tex = tex;
	return ps;
}

float4 TextPS(TextPSInput input) : SV_TARGET
{
	return g_Font.Sample(g_FontSampler, input.Tex) * input.Color;
}
